package pe.com.hatunsol.hatun_android.dao;

import android.content.ContentValues;
import android.database.Cursor;

import java.util.ArrayList;
import java.util.List;

import pe.com.hatunsol.hatun_android.entity.Establecimiento;

public class EstablecimientoDAO {

    public List<Establecimiento> list() {
        Cursor cursor = null;
        Establecimiento establecimiento = null;
        List<Establecimiento> establecimientoList = new ArrayList<>();
        try {
            cursor = DataBaseHelper.myDataBase.query("establecimiento", null, null,
                    null, null, null, null);
            while (cursor.moveToNext()) {
                establecimiento = new Establecimiento();
                establecimiento.setId(cursor.isNull(cursor.getColumnIndex("id_establecimiento")) ? 0 : cursor.getInt(cursor.getColumnIndex("id_establecimiento")));
                establecimiento.setRazonSocial(cursor.isNull(cursor.getColumnIndex("razon_social")) ? "" : cursor.getString(cursor.getColumnIndex("razon_social")));
                establecimiento.setRuc(cursor.isNull(cursor.getColumnIndex("ruc")) ? "" : cursor.getString(cursor.getColumnIndex("ruc")));
                establecimiento.setTipoEstablecimiento(cursor.isNull(cursor.getColumnIndex("tipo_establecimiento")) ? 0 : cursor.getInt(cursor.getColumnIndex("tipo_establecimiento")));
                establecimiento.setRepresentante(cursor.isNull(cursor.getColumnIndex("representante")) ? "" : cursor.getString(cursor.getColumnIndex("representante")));
                establecimiento.setDni(cursor.isNull(cursor.getColumnIndex("dni")) ? "" : cursor.getString(cursor.getColumnIndex("dni")));
                establecimiento.setTelefono(cursor.isNull(cursor.getColumnIndex("telefono")) ? "" : cursor.getString(cursor.getColumnIndex("telefono")));
                establecimiento.setObservaciones(cursor.isNull(cursor.getColumnIndex("observaciones")) ? "" : cursor.getString(cursor.getColumnIndex("observaciones")));
                establecimientoList.add(establecimiento);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        return establecimientoList;
    }

    public Establecimiento getById(long id) {
        Cursor cursor = null;
        Establecimiento establecimiento = null;
        try {
            cursor = DataBaseHelper.myDataBase.query("establecimiento", null, "id_establecimiento = ?",
                    new String[]{String.valueOf(id)}, null, null, null);
            if (cursor.moveToNext()) {
                establecimiento = new Establecimiento();
                establecimiento.setId(cursor.isNull(cursor.getColumnIndex("id_establecimiento")) ? 0 : cursor.getLong(cursor.getColumnIndex("id_establecimiento")));
                establecimiento.setRazonSocial(cursor.isNull(cursor.getColumnIndex("razon_social")) ? "" : cursor.getString(cursor.getColumnIndex("razon_social")));
                establecimiento.setRuc(cursor.isNull(cursor.getColumnIndex("ruc")) ? "" : cursor.getString(cursor.getColumnIndex("ruc")));
                establecimiento.setTipoEstablecimiento(cursor.isNull(cursor.getColumnIndex("tipo_establecimiento")) ? 0 : cursor.getInt(cursor.getColumnIndex("tipo_establecimiento")));
                establecimiento.setRepresentante(cursor.isNull(cursor.getColumnIndex("representante")) ? "" : cursor.getString(cursor.getColumnIndex("representante")));
                establecimiento.setDni(cursor.isNull(cursor.getColumnIndex("dni")) ? "" : cursor.getString(cursor.getColumnIndex("dni")));
                establecimiento.setTelefono(cursor.isNull(cursor.getColumnIndex("telefono")) ? "" : cursor.getString(cursor.getColumnIndex("telefono")));
                establecimiento.setObservaciones(cursor.isNull(cursor.getColumnIndex("observaciones")) ? "" : cursor.getString(cursor.getColumnIndex("observaciones")));
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        return establecimiento;
    }

    public long insert(Establecimiento establecimiento) {
        long id = 0;
        try {
            ContentValues cv = new ContentValues();
            cv.put("razon_social", establecimiento.getRazonSocial());
            cv.put("ruc", establecimiento.getRuc());
            cv.put("tipo_establecimiento", establecimiento.getTipoEstablecimiento());
            cv.put("representante", establecimiento.getRepresentante());
            cv.put("dni", establecimiento.getDni());
            cv.put("telefono", establecimiento.getTelefono());
            cv.put("observaciones", establecimiento.getObservaciones());
            id = DataBaseHelper.myDataBase.insert("establecimiento", null, cv);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return id;
    }

    public void delete(int id) {
        try {
            DataBaseHelper.myDataBase.delete("establecimiento", "id_establecimiento = ?", new String[]{String.valueOf(id)});
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

    public void update(Establecimiento establecimiento) {
        try {
            ContentValues cv = new ContentValues();
            cv.put("razon_social", establecimiento.getRazonSocial());
            cv.put("ruc", establecimiento.getRuc());
            cv.put("tipo_establecimiento", establecimiento.getTipoEstablecimiento());
            cv.put("representante", establecimiento.getRepresentante());
            cv.put("dni", establecimiento.getDni());
            cv.put("telefono", establecimiento.getTelefono());
            cv.put("observaciones", establecimiento.getObservaciones());
            DataBaseHelper.myDataBase.update("establecimiento", cv, "id_establecimiento = ?", new String[]{String.valueOf(establecimiento.getId())});
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}
